package com.netty.demo.server.netty.enums;

/**
 * 服务命令
 * TODO 这里面的命令仅作为参考，实际使用的时候请请自行更改
 *
 * @author 余秀良
 * @version 1.0
 * <p>date: 2017年03月6日  09:23 </p>
 * <p>address: 四川成都 </p>
 */
public enum Command {
    /**
     * 未知命令
     */
    COMMAND_UNKNOWN(0),
    /**
     * 握手请求
     */
    COMMAND_HANDSHAKE_REQ(1),
    /**
     * 鉴权请求
     */
    COMMAND_AUTH_REQ(2),
    /**
     * 登录请求
     */
    COMMAND_LOGIN_REQ(3),
    /**
     * 申请进入群组
     */
    COMMAND_JOIN_GROUP_REQ(4),
    /**
     * 进入群组通知
     */
    COMMAND_JOIN_GROUP_NOTIFY_RESP(5),
    /**
     * 退出群组通知
     */
    COMMAND_EXIT_GROUP_NOTIFY_RESP(6),
    /**
     * 聊天请求
     */
    COMMAND_CHAT_REQ(7),
    /**
     * 心跳请求
     */
    COMMAND_HEARTBEAT_REQ(8),
    /**
     * 关闭请求
     */
    COMMAND_CLOSE_REQ(9),
    /**
     * 发出撤消消息指令(管理员可以撤消所有人的消息，自己可以撤消自己的消息)
     */
    COMMAND_CANCEL_MSG_REQ(10),
    /**
     * 收到撤消消息指令
     */
    COMMAND_CANCEL_MSG_RESP(11),
    /**
     * 获取用户信息;
     */
    COMMAND_GET_USER_REQ(12),
    /**
     * 获取聊天消息;
     */
    COMMAND_GET_MESSAGE_REQ(13),
    ;
    private final int value;

    Command(int value) {
        this.value = value;
    }

    public static Command valueOf(int value) {
        return forNumber(value);
    }

    private static Command forNumber(int value) {
        for (Command command : Command.values()) {
            if (command.getNumber() == value) {
                return command;
            }
        }
        return null;
    }

    public final int getNumber() {
        return value;
    }


}
